package co.yixiang.modules.shop.vo;

import co.yixiang.modules.activity.vo.YxStoreCombinationQueryVo;
import co.yixiang.modules.activity.vo.YxStoreSeckillQueryVo;
import co.yixiang.modules.mp.service.dto.YxWechatLiveDto;
import co.yixiang.modules.product.vo.YxStoreProductQueryVo;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("首页数据")
public class IndexVo {

    @ApiModelProperty("banner")
    private List<JSONObject> banner;
    //首页按钮
    @ApiModelProperty("首页按钮")
    private List<JSONObject> menus;
    //精品推荐->拼团
    @ApiModelProperty("精品推荐")
    private List<YxStoreProductQueryVo> bastList;
    //首发新品->秒杀
    @ApiModelProperty("首发新品")
    private List<YxStoreProductQueryVo> firstList;
    //猜你喜欢
    @ApiModelProperty("猜你喜欢")
    private List<YxStoreProductQueryVo> benefit;
    //热门榜单
    @ApiModelProperty("热门榜单")
    private List<YxStoreProductQueryVo> likeInfo;
    //滚动
    @ApiModelProperty("滚动")
    private List<JSONObject> roll;
    //地图key
    @ApiModelProperty("地图key")
    private String mapKey;
    //精品推荐->拼团
    @ApiModelProperty("精品推荐->拼团")
    private List<YxStoreCombinationQueryVo> combinationList;
    //首发新品->秒杀
    @ApiModelProperty("首发新品->秒杀")
    private List<YxStoreSeckillQueryVo> seckillList;
    //直播间信息
    @ApiModelProperty("直播间")
    private List<YxWechatLiveDto> liveList;

    public static IndexVoBuilder builder() {
        return new IndexVoBuilder();
    }

    public static class IndexVoBuilder {
        private List<JSONObject> banner;
        private List<JSONObject> menus;
        private List<YxStoreProductQueryVo> bastList;
        private List<YxStoreProductQueryVo> firstList;
        private List<YxStoreProductQueryVo> benefit;
        private List<YxStoreProductQueryVo> likeInfo;
        private List<JSONObject> roll;
        private String mapKey;
        private List<YxStoreCombinationQueryVo> combinationList;
        private List<YxStoreSeckillQueryVo> seckillList;
        private List<YxWechatLiveDto> liveList;

        IndexVoBuilder() {
        }

        public IndexVoBuilder banner(List<JSONObject> banner) {
            this.banner = banner;
            return this;
        }

        public IndexVoBuilder menus(List<JSONObject> menus) {
            this.menus = menus;
            return this;
        }

        public IndexVoBuilder bastList(List<YxStoreProductQueryVo> bastList) {
            this.bastList = bastList;
            return this;
        }

        public IndexVoBuilder firstList(List<YxStoreProductQueryVo> firstList) {
            this.firstList = firstList;
            return this;
        }

        public IndexVoBuilder benefit(List<YxStoreProductQueryVo> benefit) {
            this.benefit = benefit;
            return this;
        }

        public IndexVoBuilder likeInfo(List<YxStoreProductQueryVo> likeInfo) {
            this.likeInfo = likeInfo;
            return this;
        }

        public IndexVoBuilder roll(List<JSONObject> roll) {
            this.roll = roll;
            return this;
        }

        public IndexVoBuilder mapKey(String mapKey) {
            this.mapKey = mapKey;
            return this;
        }

        public IndexVoBuilder combinationList(List<YxStoreCombinationQueryVo> combinationList) {
            this.combinationList = combinationList;
            return this;
        }

        public IndexVoBuilder seckillList(List<YxStoreSeckillQueryVo> seckillList) {
            this.seckillList = seckillList;
            return this;
        }

        public IndexVoBuilder liveList(List<YxWechatLiveDto> liveList) {
            this.liveList = liveList;
            return this;
        }

        public IndexVo build() {
            return new IndexVo(banner, menus, bastList, firstList, benefit, likeInfo, roll, mapKey, combinationList, seckillList, liveList);
        }

        public String toString() {
            return "IndexVo.IndexVoBuilder(banner=" + this.banner + ", menus=" + this.menus + ", bastList=" + this.bastList + ", firstList=" + this.firstList + ", benefit=" + this.benefit + ", likeInfo=" + this.likeInfo + ", roll=" + this.roll + ", mapKey=" + this.mapKey + ", combinationList=" + this.combinationList + ", seckillList=" + this.seckillList + ", liveList=" + this.liveList + ")";
        }
    }
}
